Počet bodov: 35, časový limit: 1000ms
Kubík mal včera vo svojej izbe párty. Ako to chodí, po každej poriadnej párty zostanú na dlážke zvyšky jedla a pitia, občas aj iná špina. Teraz je ráno, Kubík sa rozhliada po svojej izbe a rozmýšľa, ako to čo najefektívnejšie vyčistiť.
Izbu si môžete predstaviť ako štvorčekovú mriežku rozmerov \(r \times c\). Niektoré políčka mriežky sú čisté, niektoré sú špinavé. Na jednom z políčok je posteľ a na inom políčku je sprchovací kút, obe z týchto políčok považujeme za čisté.
Kubík na začiatku sedí na posteli, teda je na políčku s posteľou. V každom kroku môže skočiť na ľubovoľné políčko v rovnakom riadku alebo stĺpci a hneď ho vyčistiť. Táto cesta musí ale spĺňať niekoľko požiadaviek:
Pomôžte Kubíkovi naplánovať si čistenie.
Na prvom riadku sú dve medzerou oddelené čísla: prvý rozmer izby \(r\) a druhý rozmer izby \(c\). Platí \(4 \leq r, c \leq 1\,000\).
Nasleduje \(r\) riadkov, každý z nich obsahuje \(c\) znakov. Znak na \(i\)-tom riadku a v \(j\)-tom stĺpci popisuje počiatočný stav políčka na súradniciach \((i, j)\): A
pre posteľ, B
pre sprchu, .
pre čistú dlážku a ~
pre špinu.
Na prvý riadok výstupu vypíšte dĺžku cesty \(d\), teda počet navštívených políčok, vrátane začiatočného políčka s posteľou a koncového políčka so sprchou.
Na nasledujúcich \(d\) riadkoch vypíšte popis cesty. Na \(i\)-tom z nich nech sú medzerou oddelené súradnice v poradí \(i\)-teho navštíveného políčka.
Ak existuje viacero riešení, môžete vypísať ľubovoľné. Ak riešenie neexistuje, vypíšte namiesto toho \(-1\).
Input:
4 4
A..B
~.~.
.~~.
.~.~
Output:
8
1 1
2 1
2 3
3 3
3 2
4 2
4 4
1 4
Input:
4 4
A..B
....
....
....
Output:
2
1 1
1 4
Aj v prípade, že nemusíme nič čistiť, sa chceme vyhnúť čistej dlážke.
Input:
4 4
A..B
~..~
~..~
~~~~
Output:
-1
Nezabudnite na to, že po každom skoku treba zmeniť smer! Ak by sme smer meniť nemuseli, tak by sme tento prípad vedeli vyriešiť.